package examples.jsf.lifecycle;

import examples.jsf.context.FacesContext;
import examples.jsf.event.PhaseListener;

/**
 * @author Bill
 * @version 2013-05-29
 */
public abstract class Lifecycle {

    public abstract void execute(FacesContext context);

    public abstract void render(FacesContext context);

    /**
     * <p>Register a new {@link PhaseListener} instance that is interested in
     * being notified before and after the processing for standard phases of
     * the request processing lifecycle.</p>
     *
     * @param listener The {@link PhaseListener} to be registered
     *
     * @throws NullPointerException if <code>listener</code>
     *  is <code>null</code>
     */
    public abstract void addPhaseListener(PhaseListener listener);

}
